<template>
  <div>
    <navigation-bar>
      <div class="searchContent">
        <el-input
            v-model="name"
            placeholder="请输入药品名称"
            size="mini"
            style="width: 150px; margin-right: 10px"
        ></el-input>
        <custom-button
            type="search"
            style="margin-right: 10px"
            @searchClick="searchClick"
        ></custom-button>
        <custom-button
            type="reset"
            style="margin-right: 10px"
            @resetClick="resetClick"
        ></custom-button>
        <custom-button
            type="add"
            title="开始合并用药"
            style="margin-right: 10px"
            @addClick="addClick"
        ></custom-button>
        <custom-button
            type="add"
            title="结束合并用药"
            style="margin-right: 10px"
            @addClick="endClick"
        ></custom-button>
        <custom-button type="print"></custom-button>
      </div>
    </navigation-bar>
    <el-row>
      <el-col :span="5">
        <div style="width: 100%">
          <user-list
              @handleSelectionChange="handleSelectionChange"
              businessType="drugCombination" ref="userList"
          ></user-list>
        </div>
      </el-col>
      <el-col :span="19">
        <table-index
            :dataSource="dataSource"
            :tableColumns="tableColumns"
            :btnList="btnList"
            :pageSize="pageSize"
            :pageCount="pageCount"
            :pageNo="pageNo"
            @pageChange="pageChange"
            @editRow="editRow"
            @viewRow="viewRow"
            @deleteRow="deleteRow"
            selection
            @handleSelectionChange="handleListSelectionChange"
        ></table-index>
      </el-col>
    </el-row>
    <div v-if="dialogShow">
      <custom-dialog
          :title="dialogTitle"
          size="large"
          @dialogClose="dialogClose"
      >
        <form-index :formConfig="formConfig" @submit="submit" :type="type">
          <!--  <div>这里还可以插入其它内容进行拓展</div> -->
        </form-index>
      </custom-dialog>
    </div>
  </div>
</template>

<script>
import {combinedMedicationForm} from "@/assets/form/managementCenter/subjectManagement/combinedMedicationForm"
import customDialog from "@/components/customComponents/customDialog"
import customButton from "@/components/customComponents/customForm/customButton"
import formIndex from "@/components/customComponents/customForm/formIndex"
import tableIndex from "@/components/customComponents/customeTable/tableIndex"
import navigationBar from "@/components/customComponents/managementCenter/navigationBar"
import userList from "@/components/customComponents/managementCenter/userList"
import {AjaxCommon} from "@/libs/apiCommon"
import {PopupCommon} from "@/libs/popupCommon"
import {SessionCommon} from "@/libs/sessionCommon"

export default {
  components: {
    navigationBar,
    customButton,
    tableIndex,
    customDialog,
    formIndex,
    userList,
  },
  data() {
    return {
      // 结束合并用药时选择的列表数据
      selectList: [],
      relevancelist: [], //关联ae
      examineeCodeList: [],
      leftSelectIds: [],
      leftDataSource: [],
      leftTableColumns: [
        {
          prop: "examineeName",
          label: "受试者姓名",
        },
      ],
      name: "",
      signPrefix: "",
      // table 相关参数  begin
      dataSource: [],
      tableColumns: [
        {
          prop: "filterNo",
          label: "筛选号",
        },
        {
          prop: "filterNo",
          label: "随机号",
        },
        {
          prop: "filterNo",
          label: "入组顺序号",
          width: 100,
        },
        {
          prop: "filterNo",
          label: "周期号",
        },
        {
          prop: "examineeName",
          label: "受试者姓名",
          width: 100,
        },
        {
          prop: "sex",
          label: "性别",
          dictName: "sex",
        },
        {
          prop: "drugWay",
          label: "给药途径",
          dictName: "drug_way",
        },
        // {
        // 	prop: "weight",
        // 	label: "单次剂量",
        // },
        {
          prop: "drugHz",
          label: "给药频率",
          width: 100,
        },
        {
          prop: "indiction",
          label: "适应症",
        },
        {
          prop: "drugBeginTime",
          label: "开始给药时间",
          width: 160,
        },
        {
          prop: "drugEndTime",
          label: "结束给药时间",
          width: 160,
        },
        {
          prop: "aeName",
          label: "关联AE",
          width: 160,
        },
      ],
      btnList: ["edit", "view", "delete"],
      pageSize: 20,
      pageCount: 100,
      pageNo: 1,
      // table 相关参数  end

      // 弹窗是否显示
      dialogShow: false,
      // 弹窗标题 (新增修改不同)
      dialogTitle: "",

      // form的配置信息
      formConfig: combinedMedicationForm,
      type: "add",
    }
  },
  methods: {
    endClick() {
      let self = this
      if (this.selectList.length != 1) {
        PopupCommon.notify("info", "请勾选一条数据")
        return
      }
      if (this.selectList[0].drugEndTime !== "" && this.selectList[0].drugEndTime !== null) {
        PopupCommon.notify("info", "该合并用药已结束，请勿重复操作")
        return
      }
      console.log(self.selectList[0].id)
      AjaxCommon("/ccdc/pm/em/root/emDrugCombination/end", "post", {id: self.selectList[0].id})
          .then((res) => {
            if (res.data.code == 200) {
              PopupCommon.notify("success", "操作成功")
              self.initPage()
              self.dialogClose()
            } else {
              PopupCommon.notify("error", res.data.message)
            }
          })
          .catch((err) => {
            PopupCommon.notify("error", err.message)
          })
    },
    submit(d) {
      let self = this
      if (d.aeId) {
        d.aeName = this.relevancelist.find((t) => t.id).label
      }
      if (d.id) {
        AjaxCommon("/ccdc/pm/em/root/emDrugCombination/edit", "post", d)
            .then((res) => {
              if (res.data.code == 200) {
                PopupCommon.notify("success", "操作成功")
                self.initPage()
                self.dialogClose()
              } else {
                PopupCommon.notify("error", res.data.message)
              }
            })
            .catch((err) => {
              PopupCommon.notify("error", err.message)
            })
      } else {
        d.examineeCode = self.leftSelectIds[0].examineeCode
        d.examineeEn = self.leftSelectIds[0].examineeEn
        d.examineeName = self.leftSelectIds[0].examineeName
        d.filterNo = self.leftSelectIds[0].filterNo
        d.groupSeq = self.leftSelectIds[0].groupSeq
        d.randomNo = self.leftSelectIds[0].randomNo

        d.drugSeq = self.leftSelectIds[0].drugSeq
        d.sex = self.leftSelectIds[0].sex
        delete d.id
        AjaxCommon("/ccdc/pm/em/root/emDrugCombination/begin", "post", d)
            .then((res) => {
              if (res.data.code == 200) {
                PopupCommon.notify("success", "操作成功")
                self.initPage()
                self.dialogClose()
              } else {
                PopupCommon.notify("error", res.data.message)
              }
            })
            .catch((err) => {
              PopupCommon.notify("error", err.message)
            })
      }
    },
    dialogClose() {
      this.dialogShow = false
    },
    searchClick() {
      this.pageNo = 1
      this.initPage()
    },
    resetClick() {
      this.name = ""
      this.signPrefix = ""
    },
    //获取关联AE
    async relevanceAE(id) {
      const res = await AjaxCommon(
          "/ccdc/pm/em/root/emAe/listByPage",
          "post",
          {
            examineeCodeList: [id],
            pageSize: 1000,
          }
      )
      let relevancelist = []
      if (res.data.code == 200) {
        relevancelist = res.data.result.records
        relevancelist.map((t) => {
          t.label = t.aeName
          t.value = t.id
          return t
        })
      }
      this.relevancelist = relevancelist
      return relevancelist
    },
    async addClick() {
      if (this.leftSelectIds.length != 1) {
        PopupCommon.notify("info", "请勾选一个受试者")
        return
      }
      const relevancelist = await this.relevanceAE(
          this.leftSelectIds[0].examineeCode
      )
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == "fieldName") {
            if (t[res] == "examineeCode") {
              t.filedValue = this.leftSelectIds[0].examineeCode
            } else if (t[res] == "examineeName") {
              t.filedValue = this.leftSelectIds[0].examineeName
            } else if (t[res] == "aeId") {
              t.filedValue = ""
              t.itemList = relevancelist
            } else {
              t.filedValue = ""
            }
          }
        })
      })
      formConfigItem.groupId = this.leftSelectIds[0].id
      this.formConfig = formConfigItem

      this.type = "add"
      this.dialogShow = true
      this.dialogTitle =
          "新增" + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    // 分页点击事件
    pageChange(p) {
      this.pageNo = p
      this.initPage()
    },
    async editRow(d) {
      this.type = "edit"
      let formConfigItem = this.formConfig
      const relevancelist = await this.relevanceAE(d.data.examineeCode)
      console.log(relevancelist)
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == "fieldName") {
            t.filedValue = d.data[t[res]]
            if (t[res] == "aeId") {
              t.itemList = relevancelist
            }
          }
        })
      })
      this.formConfig = formConfigItem
      this.dialogShow = true
      this.dialogTitle =
          "编辑" + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    async viewRow(d) {
      this.type = "look"
      let formConfigItem = this.formConfig
      const relevancelist = await this.relevanceAE(d.data.examineeCode)
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == "fieldName") {
            t.filedValue = d.data[t[res]]
            if (t[res] == "aeId") {
              t.itemList = relevancelist
            }
          }
        })
      })
      this.formConfig = formConfigItem
      this.dialogShow = true
      this.dialogTitle =
          "查看" + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    deleteRow(d) {
      const id = d.data.id
      let self = this
      AjaxCommon(
          "/ccdc/pm/em/root/emDrugCombination/delete?id=" + id,
          "delete",
          {optReason: d.optReason}
      ).then((res) => {
        console.log(res, "res...............")
        if (res.data.code == 200) {
          PopupCommon.notify("success", "删除成功")
          self.initPage()
          self.dialogClose()
        } else {
          PopupCommon.notify("error", res.data.message)
        }
      })
    },
    // 左侧选中事件
    handleSelectionChange(d) {
      console.log(d)
      this.leftSelectIds = d
      this.examineeCodeList = d ? d.map((t) => t.examineeCode) : []
      this.initPage()
    },
    // 列表选中事件
    handleListSelectionChange(d) {
      this.selectList = d
    },
    // 初始化事件
    initPage() {
      let self = this
      AjaxCommon("/ccdc/pm/em/root/emDrugCombination/listByPage", "post", {
        drugName: this.name,
        examineeCodeList: this.examineeCodeList,
        pageNo: this.pageNo,
        pageSize: this.pageSize,
      }).then((res) => {
        if (res.data.code == 200) {
          self.dataSource = res.data.result.records
          self.pageCount = res.data.result.total
        } else {
          PopupCommon.notify("error", res.data.message)
        }
      })
    },
  },
  mounted() {
    this.initPage()
  },
}
</script>

<style></style>
